<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /* 
            相当于
            let a = 1
            let b = 2
            let c = 3
        */
        let [a, b, c] = [1, 2, 3]

        // 左右两边参数个数不匹配的情况
        {
            //一个变量时 左边允许使用默认值
            let [foo = true] = [];
            console.log(foo); //输出结果：true
        }

        {
            //两个变量时
            let [a, b] = ['生命壹号']; //a 赋值为：生命壹号。b没有赋值
            console.log(a + ',' + b); //输出结果：生命壹号,undefined
        }

        {
            //两个变量时
            let [a, b = 'smyhvae'] = ['生命壹号']; //a 赋值为：生命壹号。b 采用默认值 smyhvae
            console.log(a + ',' + b); //输出结果：生命壹号,smyhvae
        }
        
        // 右边undefined 和 null赋值给左边的时候 
        // undefined不会赋值 null会赋值
        {
            let [a, b = 'smyhvae'] = ['生命壹号', undefined]; //b 虽然被赋值为 undefined，但是 b 会采用默认值
            console.log(a + ',' + b); //输出结果：生命壹号,smyhvae
        }

        {
            let [a, b = 'smyhvae'] = ['生命壹号', null]; //b 被赋值为 null
            console.log(a + ',' + b); //输出结果：生命壹号,null
        }


        // 字符串解构
        let[aa,bb,cc] = 'hello'
        console.log(aa);
    </script>
</body>

</html>